package com.zzyq.pc.web.configure.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zzyq.pc.common.plugin.db.PageView;
import com.zzyq.pc.common.plugin.shiro.TokenManager;
import com.zzyq.pc.utils.LoggerUtils;
import com.zzyq.pc.web.configure.mapper.InformationMapper;
import com.zzyq.pc.web.configure.model.Information;
import com.zzyq.pc.web.configure.service.IInformationService;

@Service
public class InformationServiceImpl implements IInformationService {

	@Autowired
	private InformationMapper informationMapper;

	/**
	 * 找到方案ID集合中的敏感方案集合
	 * 
	 * @param ifmIds
	 * @return
	 */

	@Override
	public List<Integer> selectSensitiveIDs(List<Integer> ifmIds) {
		if (ifmIds != null && !ifmIds.isEmpty()) {
			return informationMapper.selectSensitiveIDs(ifmIds);
		}
		return null;
	}

	/**
	 * 获取团体所有方案ID
	 * 
	 * @param companyId
	 * @return
	 */
	@Override
	public List<Integer> selectIDsBycompanyId(Integer companyId) {
		if (companyId != null) {
			return informationMapper.selectIDsBycompanyId(companyId);
		}
		return null;
	}

	/**
	 * 查询敏感方案ID集合
	 */
	@Override
	public List<Integer> selectSensitiveIDsByCompanyId(Integer companyId) {
		if (companyId != null) {
			return informationMapper.selectSensitiveIDsByCompanyId(companyId);
		}
		return null;
	}

	/**
	 * 分页查询方案列表
	 * 
	 * @param map
	 * @return
	 */
	@Override
	public List<Information> selectInformationByCompanyId(PageView pageView) {
		// 从Session中获取团体ID
		Integer companyId = TokenManager.getUser().getCompany().getCompanyId();
		if (companyId != null) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("paging", pageView);
			map.put("companyId", companyId);
			return informationMapper.selectInformationByCompanyId(map);
		}
		LoggerUtils.debug(getClass(), "团体ID为NULL");
		return null;
	}

	/**
	 * 同一团体下不允许同名，不同团体允许同名
	 * 
	 * @param map
	 * @return false:不存在同名 true： 存在同名
	 */
	@Override
	public boolean selectInformationNameCountByCompanyId(String ifmName, Integer ifmId) {
		// 从Session中获取团体ID
		Integer companyId = TokenManager.getUser().getCompany().getCompanyId();
		if (companyId != null) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("companyId", companyId);
			map.put("ifmName", ifmName);
			if (null != ifmId) {
				map.put("ifmId", ifmId);
			}
			return informationMapper.selectInformationNameCountByCompanyId(map) > 0;
		}
		LoggerUtils.debug(getClass(), "团体ID为NULL");
		return true;
	}

	@Transactional
	@Override
	public boolean insert(Information record) {
		if (informationMapper.insert(record) > 0) {
			// 新增关系表
			// 从Session中获取团体ID
			Integer companyId = TokenManager.getUser().getCompany().getCompanyId();
			return insertCompanyInformation(companyId, record.getIfmId());
		}
		return false;
	}

	@Override
	public int updateByPrimaryKey(Information record) {
		return informationMapper.updateByPrimaryKey(record);
	}

	/**
	 * 参数过滤器
	 * 
	 * @param record
	 * @return
	 */
	@Override
	public Information InformationFilter(Information information) {
		// 判断频道资源
		if (StringUtils.isBlank(information.getIfmGetchannel())) {
			information.setIfmGetchannel("None");
		} else if (!information.getIfmGetchannel().equals("None")) {
			// 频道资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmNotchannel("None");
		}
		if (StringUtils.isBlank(information.getIfmNotchannel())) {
			information.setIfmNotchannel("None");
		} else if (!information.getIfmNotchannel().equals("None")) {
			// 频道名称资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmGetchannel("None");
		}

		// 判断微信资源
		if (StringUtils.isBlank(information.getIfmGetwechatid())) {
			information.setIfmGetwechatid("None");
		} else if (!information.getIfmGetwechatid().equals("None")) {
			// 微信业务id资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmNotwechatid("None");
		}
		if (StringUtils.isBlank(information.getIfmNotwechatid())) {
			information.setIfmNotwechatid("None");
		} else if (!information.getIfmNotwechatid().equals("None")) {
			// 微信业务id资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmGetwechatid("None");
		}

		// 判断微博资源
		if (StringUtils.isBlank(information.getIfmGetbloggerid())) {
			information.setIfmGetbloggerid("None");
		} else if (!information.getIfmGetbloggerid().equals("None")) {
			// 微博名称资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmNotbloggerid("None");
		}
		if (StringUtils.isBlank(information.getIfmNotbloggerid())) {
			information.setIfmNotbloggerid("None");
		} else if (!information.getIfmNotbloggerid().equals("None")) {
			// 微博名称资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmGetbloggerid("None");
		}

		// 判断论坛资源
		if (StringUtils.isBlank(information.getIfmGetbbsname())) {
			information.setIfmGetbbsname("None");
		} else if (!information.getIfmGetbbsname().equals("None")) {
			// 论坛名称资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmNotbbsname("None");
		}
		if (StringUtils.isBlank(information.getIfmNotbbsname())) {
			information.setIfmNotbbsname("None");
		} else if (!information.getIfmNotbbsname().equals("None")) {
			// 论坛名称资源两个字段，其中一个有值，另一个赋值为None
			information.setIfmGetbbsname("None");
		}

		// 判断关键词
		if (StringUtils.isBlank(information.getIfmGetkeyword())) {
			information.setIfmGetkeyword("None");
		}
		if (StringUtils.isBlank(information.getIfmNotkeyword())) {
			information.setIfmNotkeyword("None");
		}
		// 设置推送为0
		if (information.getIfmPushed() == null) {
			information.setIfmPushed(0);
			information.setIfmType("None");
		}
		return information;
	}

	@Override
	public boolean deleteByPrimaryKey(Integer ifmId) {
		if (ifmId != null) {
			informationMapper.deleteCompanyInformation(ifmId);
			return informationMapper.deleteByPrimaryKey(ifmId) > 0;
		}
		LoggerUtils.debug(getClass(), "ifmId为NULL 无法删除方案");
		return false;
	}

	@Override
	public boolean insertCompanyInformation(Integer companyId, Integer ifmId) {
		return informationMapper.insertCompanyInformation(companyId, ifmId) > 0;
	}

	@Override
	public boolean updateInformationType(Integer ifmId, Integer ifmIsdelete) {
		// TODO Auto-generated method stub
		return informationMapper.updateInformationType(ifmId, ifmIsdelete) > 0;
	}

}
